home *** CD-ROM | disk | FTP | other *** search
- /*============================================================
-
- Snow demo program
-
- ============================================================*/
-
- #include "N_Library.h"
-
- void Main_Process(void);
- void Key_Process(void);
-
- short Data_Rsrc = 0;
- long routine_step = 0;
- long wait;
- short S1_X[1024];
- short S1_Y[1024];
- unsigned short S1_D[1024];
- short S1_MX[1024];
- short S1_MY[1024];
- short r = 0,rs=0;
- short speed = -4;
- Boolean q = false;
- Boolean kb=false;
- EventRecord theEvent;
-
- void main(void)
- {
- WindowPtr window;
- short i;
-
- ToolboxInit();
- ColorCheck();
- HideMenuBar();
- HideCursor();
- window = GetNewWindow (128,nil,(WindowPtr)-1L );
- N_Window_Set(window,-(window->portBits.bounds.left),-(window->portBits.bounds.top),640,480);
- SetPort((GrafPtr)window);
- N_Sp_Make(640,480);
- N_Cel_Make2(640,480);
- Open_Resource_File(128,1,&Data_Rsrc);
- // Set board Sprites <Sprites & Cel> (Sprite 256)
- Through_Col = 0xff; //transparent color = 0xff
- N_Sprite_Set(200,256,216,88,0,1,1,0); //wood board (Sp 256)
- // Set Snow Sprites (Sprite 30-46)
- N_Sprite_Set(404,30,32,32,0,1,1,2); //snow pattern
- N_Sprite_Set(419,46,8,8,0,1,1,0);
- Through_Col = 0x00; //transparent color = 0x00
- N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);
- Close_Resource_File(&Data_Rsrc);
-
- routine_step = 0;
- for (i = 0;i!=1024;i++)
- {
- N_Cel_Kill(i);
- S1_X[i] = GetRandom(0,640*32)-640*16;
- S1_Y[i] = GetRandom(0,480*32)-480*16;
- S1_D[i] = GetRandom(1,255);
- S1_MX[i] = GetRandom(0,30)-15;
- S1_MY[i] = GetRandom(0,30)-15;
- }
-
- N_Pict_Effect (131,0,0,3,0,0);
- for (i=0;i!=32;i++)
- {
- Delay(1,&wait);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- N_Pict_Effect (131,0,0,3,1,0);
- }
- do
- {
- Main_Process();
- }
- while (q==false);
- FlushEvents( everyEvent, 0 );
- ShowMenuBar();
- ShowCursor();
- ColorRevert();
- }
-
- void Main_Process(void)
- {
- short i,x,y,ii,p = 0,dist,bt;
- long wrk;
- long xx,yy;
- unsigned long dum;
- char key;
- Boolean emp;
- Point mp;
-
- Key_Process();
- routine_step++;
-
- if (routine_step<64)
- {
- N_Cel_Put(1799,0x80000000+256,212,(short)(routine_step*4-92));
- }
- if (routine_step>=64 && routine_step<192)
- {
- N_Cel_Put(1799,0x80000000+256,212,164);
- }
- if (routine_step>=192 && routine_step <300)
- {
- N_Cel_Put(1799,0x80000000+256,212,(short)164+((routine_step-192)*5));
- }
-
- if (routine_step < 300) ii = routine_step;
- else ii = 300;
-
- for (i = 0;i!=ii;i++)
- {
- S1_X[i] += S1_MX[i]+GetRandom(0,10)-5;
- if (S1_X[i]<-640*16)S1_X[i]=640*16;
- if (S1_X[i]>640*16)S1_X[i]=-640*16;
- S1_Y[i] += S1_MY[i]+GetRandom(0,10)-5;
- if (S1_Y[i]<-640*16)S1_Y[i]=640*16;
- if (S1_Y[i]>640*16)S1_Y[i]=-640*16;
- x = S1_X[i];
- y = S1_Y[i];
- wrk = S1_D[i];
- wrk = wrk / 16;
- wrk = 16-wrk;
- if (wrk>14) wrk = 15;
- N_Cel_3D_Put(i,0x80000000+30+wrk,x,y,320,240,r,S1_D[i]);
- dist = S1_D[i] + speed;
- if (dist < 0)
- {
- dist = 512+dist;
- N_Cel_Get(i,&emp,&dum,&x,&y);
- N_Sp_Put(0x80000000+46,x-4,y-4);
- S1_X[i] = GetRandom(0,640*32)-640*16;
- S1_Y[i] = GetRandom(0,480*32)-480*16;
- }
-
- if (dist > 255)
- {
- dist = dist -256;
- S1_X[i] = GetRandom(0,640*32)-640*16;
- S1_Y[i] = GetRandom(0,480*32)-480*16;
- }
- S1_D[i] = dist;
- }
- r=r+rs;
- N_Cel_Loop2(0,0);
-
- }
-
- void Key_Process(void)
- {
- char ky;
-
- ky = N_Key_Get();
- if (kb == false)
- {
- if ((ky & 0x01) !=0)
- {
- speed++;
- kb = true;
- }
- if ((ky & 0x02) !=0)
- {
- rs--;
- kb = true;
- }
- if ((ky & 0x04) !=0)
- {
- rs++;
- kb = true;
- }
- if ((ky & 0x08) !=0)
- {
- speed--;
- kb = true;
- }
-
- if ((ky & 0x40) !=0)
- {
- N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);
- kb = true;
- }
- }
-
- if ((ky & 0x80) !=0)
- {
- q = true;
- }
- if (ky==0) kb = 0;
- }
-
-
-